package com.thitech.sif.socket;

import com.thitech.sif.Executor;
import com.thitech.sif.Helper;
import com.thitech.sif.exception.InputException;
import com.thitech.sif.exception.OutputException;
import com.thitech.sif.exception.ServiceExecuteException;

/**
 * <pre>
 * Socket服务封装方法回调街口，本接口专供没有提供JAR包的系统使用
 * 
 * 1、getInput方法功能：把组织好的Socket请求报文返回给框架，必须返回。如果为空则抛出异常。
 * 
 * 2、doExecute方法功能：由于各系统提供的jar包都不一样，实现方式及调用方式都不同，因此在本框架中只提供该方法给服务封装人员，
 * 服务封装人员在本方法中实现Socket的调用及返回值的处理。并把返回回来的报文转换成字符串，存储在SocketBaseOutPut对象的respongseString
 * 字段中，该字段为必输字段，如果为空则框架会抛出异常。SocketBaseOutput对象中的SIFReturn对象也在该方法中赋值，注意：一定要把Socket
 * 中返回的值放在该对象中。
 * </pre>
 * 
 * @author shisheng.lian
 * @date 2014-04-10
 * 
 */
public interface SocketHelperForJar extends Helper {
	/**
	 * 把组织好的Socket请求报文返回给框架，必须返回，如果为空则会抛出异常。
	 * 
	 * @param executor
	 *            Socket服务执行对象，包含所有服务调用所需要的上下文数据对象
	 * @return
	 */
	public String getInput(Executor executor);

	/**
	 * 由于各系统提供的jar包都不一样，实现方式及调用方式都不同，因此在本框架中只提供该方法给服务封装人员，
	 * 服务封装人员在本方法中实现Socket的调用及返回值的处理
	 * 。并把返回回来的报文转换成字符串，存储在SocketBaseOutPut对象的respongseString
	 * 字段中，该字段为必输字段，如果为空则框架会抛出异常
	 * 。SocketBaseOutput对象中的SIFReturn对象也在该方法中赋值，注意：一定要把Socket 中返回的值放在该对象中。
	 * 
	 * @param executor
	 *            Socket服务执行对象，包含所有服务调用所需要的上下文数据对象
	 * @return
	 * @throws ServiceExecuteException
	 *             服务调用时如果出现异常，则转换成该异常并抛出。
	 * @throws InputException
	 *             组织报文时如果出现异常，则转换成该异常并抛出。
	 * @throws InputException
	 *             处理Socket返回结果时出异常，则转换成该异常并抛出。
	 */
	public SocketBaseOutput doExecute(Executor executor)
			throws ServiceExecuteException, InputException, OutputException;
}
